// learn
// https://sagittarius-rev.gitbooks.io/understanding-ecmascript-6-zh-ver/content/chapter_7.html
// http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431917590955542f9ac5f5c1479faf787ff2b028ab47000

// 1. 變量提升 hoisting
// 使用 var 关键字声明的变量 无论其实际声明位置在何处，都会被视为声明于所在函数的顶部

// 2. 块级声明
// 在一个函数内部 or 在一个代码块（由一对花括号包裹）内部

// 暂时性死区
// 使用 let 或 const 声明的变量，在达到声明处之前都是无法访问的，
// 试图访问会导致一个引用错误，即使在通常是安全的操作时（例如使用 typeof 运算符），也是如此。
